Device independent message distribution platform

ABSTRACT

An example system for device-independent point to multipoint communication is configured to receive a message addressed to one or more destination users, the message type being, for example, Short Message Service (SMS), Instant Messaging (IM), E-mail, web form input, or Application Program Interface (API) function call. The system also is configured to determine information about the destination users, the information comprising preferred devices and interfaces for receiving messages, the information further including message receiving preferences. The system applies rules to the message based on destination user information to determine the message endpoints, the message endpoints being, for example, Short Message Service (SMS), Instant Messaging (IM), E-mail, web page output, or Application Program Interface (API) function call. The system translates the message based on the destination user information and message endpoints and transmits the message to each endpoint of the message.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/738,790, filed Jun. 12, 2015, which is a continuation of U.S.application Ser. No. 13/744,929, filed Jan. 18, 2013, now U.S. Pat. No.9,088,532, which is a continuation of U.S. application Ser. No.12/177,589, filed Jul. 22, 2008, now U.S. Pat. No. 8,401,009, whichclaims the benefit of U.S. provisional application No. 60/951,415, filedJul. 23, 2007. The contents of each of these applications and patentsare incorporated herein in their entirety.

BACKGROUND 1. Field of Art

The disclosure generally relates to the field of electroniccommunications and more specifically, to distributing messagesindependently of the sending or receiving devices.

2. Description of the Related Art

Electronic communication is normally available only between similardevices or message types. When a user sends an e-mail message through ane-mail client, the sender specifies the e-mail addresses of therecipients and the message is delivered to the e-mail accounts of therecipients who retrieve the messages through e-mail clients. Similarly,a user will send a Short Message Service (SMS) message from a cellphone, specify the phone numbers of the recipients, and the recipientswill view the message on their cell phones. Similar procedures arenormally followed for Instant Messaging (IM) and Web-based communication(such as a web-based discussion forum).

While there is some ability to communicate between devices or messagetypes, there are still significant limitations. For example, it ispossible to send SMS messages from a web-based interface and it ispossible to send SMS messages from a cell phone to an e-mail account.However, these features are often provider-specific (for example, a useroften must go to a specific provider, e.g., Verizon, website to send SMSmessages to that specific provider's mobile phone service, i.e.,Verizon) and do not provide more generally useful cross-devicecommunication capabilities. Also, a sender is still required to send toa particular receiving device or format of the receiver and the sendermust know the appropriate address to send to. For example, instead ofbeing able to send a message to a user and allow the user to receive themessage however the user chooses (e-mail, IM, or SMS), the sender mustspecify the method of receipt and the corresponding address (forexample, SMS with a phone number).

Additionally, there is no general method of sending a message tomultiple users who may be receiving the same message using differentdevices or interfaces. For example, a user may want to send a message tothree SMS recipients (all using different cell phone service providers),two e-mail recipients, and a web interface recipient.

In general, the current state of the art lacks, inter alia, a system andmethod for sending a message to multiple receivers where the sender andreceivers are using different devices and interface, and where thesender does not need to have knowledge of the receiver's particulardevice and interface, or the receiver's address for the particulardevice and interface of choice.

SUMMARY

Disclosed is a system (and/or method) that includes, for example, arouting engine that receives a message from any of various entry points,including e-mail, short message service (SMS), instant messenger (IM),web input, and application programming interface (API) function calls.The routing engine determines the identities of the destination users toreceive the message, possibly by expanding destination groups. Therouting engine determines the endpoints on which the destination userswish to receive the message, the endpoints can be one or more of e-mail,SMS, IM, web input, and API function calls. The destination endpointsare independent of the source entry points, and the message sender doesnot need to have knowledge of the endpoints, or endpoint-specific useraddresses. A single user can receive a message at multiple endpoints.The routing engine applies rules to the message to determine the actualdestination endpoints for each user, translates the message asappropriate for each endpoint, and transmits the message to theendpoints, where the message is delivered to the destination user.

The system beneficially allows for device independent point tomultipoint communication. The destination endpoints are independent ofthe source entry points, and the message sender does not need to haveknowledge of the endpoints, or endpoint-specific user addresses. Areceiving user controls that user's destination endpoint and receiptpreferences. A message can be translated for improved viewing on aparticular destination endpoint. Additionally, advertisements can beprovided to users based on user activity in the system.

The features and advantages described in the specification are not allinclusive and, in particular, many additional features and advantageswill be apparent to one of ordinary skill in the art in view of thedrawings, specification, and claims. Moreover, it should be noted thatthe language used in the specification has been principally selected forreadability and instructional purposes, and may not have been selectedto delineate or circumscribe the disclosed subject matter.

BRIEF DESCRIPTION OF DRAWINGS

The disclosed embodiments have other advantages and features which willbe more readily apparent from the detailed description, the appendedclaims, and the accompanying figures (or drawings). A brief introductionof the figures is below.

FIG. 1 illustrates one embodiment of an overall point to multipointcommunication system.

FIG. 2 illustrates one embodiment of the routing engine in a multipointcommunication system, for example, as shown in FIG. 1.

FIG. 3 illustrates one embodiment of the translation module in a routingengine, for example, as shown in FIG. 2.

DETAILED DESCRIPTION

Reference will now be made in detail to several embodiments, examples ofwhich are illustrated in the accompanying figures (FIGS.). It is notedthat wherever practicable similar or like reference numbers may be usedin the figures and may indicate similar or like functionality. Thefigures depict embodiments of the disclosed system (or method) forpurposes of illustration only. One skilled in the art will readilyrecognize from the following description that alternative embodiments ofthe structures and methods illustrated herein may be employed withoutdeparting from the principles described herein.

FIG. 1 illustrates one embodiment of an overall point to multipointcommunication system 100. The communication system 100 includes an entrypoint 102, a routing engine 104, a transmission engine 108, a messagestorage 110, an aggregator 106, and endpoints 114. The transmissionengine 108 further includes a web transmission engine 108A, anapplication program interface (API) transmission engine 108E, an instantmessaging (IM) transmission engine 108B, an e-mail transmission engine108C, and a short messaging service (SMS) transmission engine 108D. Theendpoints 114 further include a web endpoint 114A, an API endpoint 114E,an IM endpoint 114B, and e-mail endpoint 114C, and an SMS endpoint 114D.

The entry point 102 communicatively couples the routing engine 104. Therouting engine communicatively couples the transmission engine 108.Specifically, the routing engine 104 couples with the web, API, IM,e-mail, or SMS transmission engines 108. The web and API transmissionengines 108 couple with the web and API endpoints 114, respectively,through the mass storage 110. The IM and e-mail transmission engines 108couple with the IM and e-mail endpoints 114, respectively. The SMStransmission engine 108D couples with the SMS endpoint 114D through theaggregator 106.

A user composes a message to be sent from an entry point (or initiatingendpoint) 102. There are several possible devices and interfaces forsending a message, here referred to as entry points 102. One entry pointis Short Messaging Service (SMS), where a user typically creates an SMSmessage on a cell phone. Another entry point is Instant Messaging (IM),where a user can be running an IM client such as Google Talk on acomputer and the user composes the message in the IM client. Anotherentry point is E-mail, where a user composes a message to be sent by ane-mail client. Another entry point is the World Wide Web, or web, wherea user visits a specific site or sites to compose a message and submitit through the site (for example, via a web form).

Another possible entry point 102 is through Application ProgramInterface (API) functions. An API allows creation of many additionaltypes of interfaces for a user to compose and send a message. Forexample, a specialized application or website can be designed where theuser can compose a message and the message is sent using an API functionprovided by the routing engine. Sample API functions are discussedfurther below.

Note that the entry point device 102 can be any computing device, forexample, a cell (or mobile) phone, a laptop computer, desktop or servercomputer, or a specialized appliance having communication capability.The entry point can be different at each endpoint and need not be thesame.

The routing engine 104 receives a message from an entry point 102 anddetermines where the message is to be sent. The routing engine mayproduce multiple copies of the message to be sent to multiple endpoints114. The routing engine sends messages to the appropriate transmissionengines 108 for delivery to the endpoints 114. The routing engine isdescribed further below. The endpoints 114 represent the actual userdevices and interfaces for receiving the message. The transmissionengines 108 send messages to their respective endpoints 114. Thetransmission engines 108 may also send the messages to a storage 108 oraggregator 106, as described below, before the messages are received atthe endpoint. The transmission engines 108 and endpoints are describedfurther below.

A message can be sent by a user from an entry point 102 to multipleusers at multiple endpoints 102. For example, suppose User1 sends an SMSmessage. This message can be received by User2 via e-mail and IM,received by User3 via SMS, and received by User4 by Web and IM. Theendpoints at which a particular user receives messages is under controlof the receiving user and is not of concern for the sending user. Thesystem 100 beneficially allows a user from an entry point to send amessage to multiple users at different endpoints by simply addressingthe message to the users (or a group containing the users) withoutknowledge of the specific endpoints associated with the users.

FIG. 2 illustrates one embodiment of the routing engine 104 in thesystem of FIG. 1. The routing engine 104 includes a group expansionmodule 202, a group database 214, a user lookup module 204, a userdatabase 206, a rules module 208, a rules database 210, and atranslation module 212.

The group expansion module 202 communicatively couples the groupdatabase 214 and the user lookup module 204. The user lookup module 204also communicatively couples with the user database 206 and the rulesmodule 208. The rules module 208 also communicatively couples with therules database 210 and the translation module 212.

A message is received from the entry point 102 by the group expansionmodule 202. The group expansion module expands any group names in theaddresses specified in the message. The group expansion module obtainsgroup membership data from the group database 214.

A message can be addressed to a single other user, a list of otherusers, or a group name where the group includes one or more users. Agroup name can be, for example “Work,” which includes multiple addressesfrom the user's workplace. Users can define groups and send thesedefinitions to the routing engine 104 which stores them in the groupdatabase 214. Groups can be defined, for example, using a web or SMSbased interface that communicates with the routing engine. Themembership of a group can be controlled by a single user or by multipleusers. In one embodiment, individual users can add themselves to orremove themselves from a group by sending appropriate “add” or “remove”messages to the routing engine.

In one embodiment, when a message is not addressed to any users orgroups, the message is sent to a default group. Each user has a defaultgroup that is referred to as the FollowerGroup of the user. A messagenot addressed to any recipient in particular is considered an “update”message that is sent to the user's FollowerGroup. A user can choose tofollow another user and receive that user's updates by joining thatuser's FollowerGroup, again possibly through a web or SMS interface thatcommunicates with the routing engine and the group database 214. A usercan restrict the membership of its FollowerGroup through a per-followerapproval or blocking process.

After any groups or default groups are expanded to individual users, themessage is received by the user lookup module 204. The message addressesspecified by the user or expanded by the group expansion module are usedonly to identify the recipient users, not to specify the method ofreceipt. For example, a message can be addressed simply to the username“UserX” without specifying whether UserX is to receive the messagethrough e-mail, SMS, IM, etc. The choice of method of receipt for eachuser is determined by the routing engine and the sender does not haveknowledge of this. As a consequence, the sender does not need to knowspecific per-device addresses (which the recipient may wish to keepsecret or otherwise may be unable to divulge), such as a cell phonenumber. However, optionally, the message can be given a device specificaddress such as a cell phone number if known. Such messages will stillbe delivered according to the recipient user's preferences, which may ormay not include an SMS message sent to a cell phone. The deliveryformats of a message to a particular user are independent of the type ofaddress used to identify the user.

The user lookup module 204 looks up information for each recipient userto enable the user to receive the message. The routing engine uses thisinformation to send the message to the appropriate endpoints for eachuser. The information includes each user's receiving preferences anddevice-specific receiving addresses, such as phone numbers. Thisinformation is stored in the user database 206. For example a user mightspecify that he or she wishes to receive messages through a webinterface, through e-mail, and through SMS (i.e., a copy of eachincoming message should be sent to each of those three endpoints for theuser). This information would be stored in the user database along withthat user's web interface login and password, the user's e-mail address,and the user's cell phone number and cell phone service provider. Theendpoints at which a user is to receive messages can change over time byupdates from the user or by devices being turned on or off. In this way,the messages can follow the user as the user moves from one device toanother, rather than requiring the user to check multiple devices formessages.

The user may further have specified receipt preferences, such as whenmessages are to be received, the maximum number of messages, or specialtranslation instructions. For example, the user may specify that only 10e-mails are to be received per day, that SMS messages should only bereceived between 8:00 am and 10:00 pm, and that long URLs should beshortened. This information will also be stored in the user database.The user database is populated when users register with the system, asdescribed below, and when users change their message receivingpreferences, possibly through a web interface with the system.

The user lookup module 204 retrieves destination and receipt preferenceinformation for each recipient of the message and attaches thisinformation to the message for further processing by the system. Themessage is received by the rules module 208, which applies rules tofurther determine where the message is to be sent. The rules module 208processes the preferences specified by each recipient. For example, if arecipient specified that it wanted to receive at most 10 e-mails perday, the rules module would determine if this daily threshold has beenreached. If it has been, then the message would not be sent by e-mail,and the rules module would remove the e-mail destination address forthat recipient for this message.

The rules module 208 also applies global rules to the message anddestination addresses. These global rules are specified in the rulesdatabase 210, which can be populated by a system administrator. Examplesof global limits include a maximum number of messages that a user cansend or receive per day or a maximum message length. Also, system widelimits can be imposed on messages. For example, a maximum number of SMSmessages (sent by all users) to cell phones with Verizon service can besent by the system per month. The rules module will enforce this rule,possibly by removing some Verizon SMS recipients from low prioritymessages when the number of messages is approaching the monthly limit.

The translation module 212 receives messages from the rules module 208and processes the content of the messages based on the needs orpreferences of the recipients. FIG. 3 illustrates one embodiment of thetranslation module 212. The translation module 212 modifies the body ofthe message so that it is compatible with and easy to view on thedestination endpoint 114. Since a single message may be sent to multipleendpoints, the translation module may produce copies of the message,process them differently, and send the differently translated copies todifferent endpoints (e.g., one to IM recipients and one to SMSrecipients).

The translation module 212 includes a transcoder 302, a link converter304, and an image converter 306. The transcoder 302 communicativelycouples with the link converter 304. The link converter 304communicatively couples with the image converter 306.

The transcoder 302 converts the character encoding of the message, ifnecessary. For example, if the message is sent using SMTP e-mail and isencoded using ASCII while the SMS recipient prefers to receive messagesencoded using the GSM 7-bit alphabet, the transcoder will convert themessage. The encoding preference of a user can be automaticallydetermined based on the device or interface on which the user willreceive the message, or can be based on user supplied preferences. Thisinformation can be obtained from the user database 206.

The link converter 304 receives the message from the transcoder 302 andprocesses hyperlinks and uniform resource locators (URLs) in the body ofthe message. The link converter can convert a plain-text URL to anactive link if the destination medium allows the user to follow activelinks, for example by clicking on them. The link converter can alsoconvert an active link back to a plain text URL. The link converter canshorten a URL to minimize the length of the message at the destination.One way to do this is to replace the longer URL with a shorter one thatredirects to the original URL. This is useful for SMS receivers, forexample, because their devices may have small screens and maximummessage length restrictions. The link converter can also expand a URLthat has been shortened.

The image converter 306 can convert from a URL or link that points to animage to the image itself. For example, an SMS sender may include a linkto an image in a message being sent to an e-mail receiver who is capableof reading e-mails with inline or attached images. The image converterwill visit the link in the SMS message, obtain the image, and place itdirectly in an e-mail message to the recipient so that the recipientdoes not need to click on the link to view the image.

Next, the routing engine sends the message to the appropriatetransmission engines 108 for transmission to the appropriate recipients.As described above, a single message may be sent to recipients atdifferent endpoints, so that a single message may be routed to multipletransmission engines. The transmission engines 108 control when themessage is actually sent from the system, and the engines may includequeues to delay the sending of messages if necessary (for example, thereceiving system is currently overloaded).

The web transmission engine 108A sends messages to a web interface sothat the receiving user can log into a website and view the messages.The web transmission engine stores messages in a message storage 110that the receiving user can access. Other users can access messagesdesignated as publicly viewable in the message storage. Additionally, anApplication Program Interface (API) 112 function can access the messagestorage to retrieve messages. In one embodiment, a user can request aparticular web page and view all of the messages the user has recentlyreceived. Additionally, a user can request various web pages thatdisplay all of the messages sent by other users that the requesting userhas permission to view. For example, a user-specific web page maycontain all messages sent to that user's FollowerGroup, and any of theuser's followers can view that page.

In one embodiment an API can be used to send messages from an entrypoint 102 or retrieve messages at an endpoint 114. API functions areprovided by the routing engine 104 and transmission engine 108E.Applications, for example with specialized graphical interfaces, can bedeveloped using the API for interacting with the routing engine andtransmission engines. Some API functions may require authentication, forexample to ensure that a user is retrieving messages that only that useris permitted to retrieve.

The following are examples of API functions, in one embodiment:

public_timeline—Returns the 20 most recent messages from users who allowtheir messages to be publicly viewed

user_timeline—Returns the 20 most recent messages from a particular user(may require authentication).

show—Returns a single message, specified by an identification parameter.

update—Post an “update”, which is a message sent to the followers (i.e.,the members of the FollowerGroup) of a user

followers—Returns the members of the FollowerGroup of a user.

The IM transmission engine 108B sends messages to an appropriate IMnetwork, such as Google Talk, which then sends the message to thedestination user via an IM client. The IM transmission engine 108B cansend the message via XML.

The e-mail transmission engine 108C sends messages via SMTP (simple mailtransfer protocol) (or any other appropriate electronic mail protocol)to an appropriate destination e-mail server. The e-mail transmissionengine 108C also can be configured to function with, for example, amessaging application programming interface (MAPI).

The SMS transmission engine 108D sends messages to an aggregator 106.The SMS transmission engine can send messages using XML or SMPP. Theaggregator sends SMS messages, often in bulk, to various SMS serviceproviders that then send the messages to the devices of individualusers. The aggregator can queue messages before sending them to an SMSservice provider.

In one embodiment, messages are dropped if they cannot be delivered. Forexample, if a user is not logged into an IM client, any messages sent tothis endpoint are dropped, though the messages may still be delivered toother endpoints. In another embodiment, such messages are queued untilthey can be delivered. Alternatively, the messages can be diverted toanother endpoint where they can be retrieved later. For example, SMSmessages that cannot be delivered can be sent to a web endpoint.

A user registers with the system so that the user can send and receivemessages. The registration process can be completed over a single entrypoint so that, for example, a user can fully register by sending SMSmessages to the system without ever having to access a system website. Auser can send a registration message to the system either specifying ausername or asking the system to generate a username. The system storesthe user's contact information (such as a cell phone number) andusername and registers the user. The system sends back anacknowledgement, possibly including a generated username. The user canregister to receive updates from (i.e., to “follow”) other specifiedusers and can otherwise configure his or her account with the system bysending configuration messages in specified formats to the system. Aconfiguration message can contain, for example, message receiptpreferences. In one embodiment, a new user is automatically registeredwith the system when the new user either joins a group (such as afollowers group) or sends a message. The new user can be given asystem-generated username and an account with default preferences.

Users may tend to follow other users with similar interests, resultingin communities of users with similar interests. For example, if users A,B, and C have a similar interests, A may follow B and C, B may follow Aand C, and C may follow A and B. As a result, A, B, and C will haveformed a community of users. Not all members of a community need tofollow each other, but a community generally has users frequentlysending messages to each other.

Advertisements can be shown to users in sync with messages and can betargeted to the types of messages a user is receiving. Additionally, theadvertisement can take into account other information, such as thedevice being used by the user, the location of the user, the time anddate, and the current activity of other users connected to the user. Anadvertiser can also collect user data for analysis or market researchpurposes.

Commercial accounts can be created with a third party where the thirdparty (such as third-party content generators ESPN® or MTV®) provides aspecialized interface or content for users. For example, the commercialaccount can include special artwork and messaging features, or canprovide the first notification of a new product release to theircustomers. Users in a community can follow certain notification servicesto keep them aware of community developments. Community members caninteract by having community members follow their updates and bydirectly sending messages to various community services, such ascommunity votes.

Activity in the community enables a commercial account owner oradvertiser to determine what's currently of interest to the community(e.g., the “buzz”). Advertisements and community services can bemodified based on the activity of users in the community. Searches canbe conducted in message archives to mine for data and perform variousmarket research analyses.

Some portions of above description describe the embodiments of theinvention in terms of algorithms and symbolic representations ofoperations on information. These algorithmic descriptions andrepresentations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs or equivalent electrical circuits,microcode, or the like. Furthermore, it has also proven convenient attimes, to refer to these arrangements of operations as modules, withoutloss of generality. The described operations and their associatedmodules may be embodied in software, firmware, hardware, or anycombinations thereof.

As used herein any reference to “one embodiment” or “an embodiment”means that a particular element, feature, structure, or characteristicdescribed in connection with the embodiment is included in at least oneembodiment. The appearances of the phrase “in one embodiment” in variousplaces in the specification are not necessarily all referring to thesame embodiment.

Some embodiments may be described using the expression “coupled” and“connected” along with their derivatives. It should be understood thatthese terms are not intended as synonyms for each other. For example,some embodiments may be described using the term “connected” to indicatethat two or more elements are in direct physical or electrical contactwith each other. In another example, some embodiments may be describedusing the term “coupled” to indicate that two or more elements are indirect physical or electrical contact. The term “coupled,” however, mayalso mean that two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each other. Theembodiments are not limited in this context.

As used herein, the terms “comprises,” “comprising,” “includes,”“including,” “has,” “having” or any other variation thereof, areintended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus. Further, unless expressly stated to the contrary,“or” refers to an inclusive or and not to an exclusive or. For example,a condition A or B is satisfied by any one of the following: A is true(or present) and B is false (or not present), A is false (or notpresent) and B is true (or present), and both A and B are true (orpresent).

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the invention. Thisdescription should be read to include one or at least one and thesingular also includes the plural unless it is obvious that it is meantotherwise.

Upon reading this disclosure, those of skill in the art will appreciatestill additional alternative structural and functional designs for adevice independent communications platform. Thus, while particularembodiments and applications have been illustrated and described, it isto be understood that the disclosure is not limited to the preciseconstruction and components disclosed herein and that variousmodifications, changes and variations which will be apparent to thoseskilled in the art may be made in the arrangement, operation and detailsof the method and apparatus disclosed herein without departing from thespirit and scope as defined in the appended claims.

What is claimed is:
 1. A method of content distribution for a contentdistribution system, the method comprising: receiving, from a first userof the content distribution system, endpoint information indicative ofone or more endpoints for the first user to receive content; storing theendpoint information in a storage; receiving, from the first user,follower information indicative of one or more other users to befollowed by the first user; storing the follower information in thestorage; receiving, from a second user of the content distributionsystem, first content for distribution to unspecified users of thecontent distribution system; identifying, by a computer processor,followers of the second user, wherein the first user is among thefollowers; identifying, using the endpoint information in the storage,the one or more endpoints for the first user; transmitting the firstcontent to the identified endpoints; determining second content fortransmitting to the first user, based on one or more of activities ofusers of the content distribution system other than the first user,location of the first user, or a characteristic of a computer deviceassociated with the first user; and transmitting the second content tothe first user.
 2. The method according to claim 1, wherein the secondcontent comprises advertising.
 3. The method according to claim 1,wherein the received first content includes a uniform resources locator(URL).
 4. The method according to claim 3, further comprising convertingthe URL to a converted URL before transmitting the first content to theidentified endpoints.
 5. The method according to claim 4, wherein theconverted URL is a shortened URL.
 6. The method according to claim 3,further comprising replacing the URL with content corresponding to theURL before transmitting the first content to the identified endpoints.7. The method according to claim 1, further comprising converting aportion of the received first content before transmitting the firstcontent to the identified endpoints.
 8. The method according to claim 1,wherein the first content comprises a vote request.
 9. A contentdistribution system comprising one or more servers, the serverscomprising: one or more memories; and one or more processors configuredto execute executable instructions stored in the one or more memories tocontrol the content distribution system to perform operationscomprising: receiving first content, originating from a first contentsource, for distribution to unspecified users of the contentdistribution system; identifying, as recipients for the first content,users of the content distribution system that are followers of the firstcontent source; identifying, using endpoint information, one or moreendpoints for the identified followers of the first content source;transmitting the first content to the endpoints for the identifiedfollowers of the first content source; determining second content,originating from a second content source, for transmitting to one of theidentified followers of the first content source, based on one or moreof activities of users of the content distribution system other than theone identified follower, location of the one identified follower, or acharacteristic of a computer device associated with the one identifiedfollower; and transmitting the second content to the endpoints of theone identified follower.
 10. The content distribution system accordingto claim 9, wherein the one or more processors are configured to executethe instructions stored in the one or more memories to control thecontent distribution system to receive, from a user, a request for atimeline and transmitting the timeline to an endpoint of the requestinguser.
 11. The content distribution system according to claim 10, whereinthe timeline comprises a public timeline.
 12. The content distributionsystem according to claim 10, wherein the timeline comprises a privatetimeline.
 13. The content distribution system according to claim 9,wherein the one or more processors are configured to execute theinstructions stored in the one or more memories to control the contentdistribution system to: authenticate a user; process a request from theauthenticated user for a timeline; and transmit the timeline to anendpoint of the requesting user.
 14. The content distribution systemaccording to claim 9, wherein the one or more processors are configuredto execute the instructions stored in the one or more memories tocontrol the content distribution system to receive, from a user, arequest for a list of user followers and to transmit the list to therequesting user.
 15. The content distribution system according to claim9, wherein the second content comprises advertising.
 16. The contentdistribution system according to claim 9, wherein the first contentincludes a uniform resources locator (URL).
 17. The content distributionsystem according to claim 16, wherein the one or more processors areconfigured to execute the instructions stored in the one or morememories to control the content distribution system to convert the URLto a converted URL before transmitting the first content to theendpoints for the identified followers of the first content source. 18.The content distribution system according to claim 17, wherein theconverted URL is a shortened URL.
 19. The content distribution systemaccording to claim 16, wherein the one or more processors are configuredto execute the instructions stored in the one or more memories tocontrol the content distribution system to replace the URL with contentcorresponding to the URL before transmitting the first content to theendpoints for the identified followers of the first content source. 20.The content distribution system according to claim 9, wherein the one ormore processors are configured to execute the instructions stored in theone or more memories to control the content distribution system toconvert a portion of the received first content before transmitting thefirst content to the endpoints for the identified followers of the firstcontent source.
 21. The content distribution system according to claim9, wherein the one or more processors are configured to execute theinstructions stored in the one or more memories to control the contentdistribution system to receive third content from a first user directlyaddressed to a second user; identify, using the endpoint information,endpoints for the second user; and transmit the third content to theidentified endpoints for the second user.
 22. The content distributionsystem according to claim 9, wherein the one or more processors areconfigured to execute the instructions stored in the one or morememories to control the content distribution system to receive, fromusers of the content distribution system, preference informationindicative of preferences for the respective users.
 23. The contentdistribution system according to claim 9, wherein the first contentcomprises a vote request.
 24. A system comprising: the contentdistribution system according to claim 9; and a computer deviceconfigured to receive the first and second content from the contentdistribution system.
 25. The system according to claim 24, wherein thecomputer device is configured to display the first content and thesecond content in sync.
 26. The system according to claim 24, whereinthe computer device comprises a mobile phone including an applicationhaving an application program interface (API) function for retrievingthe first content and the second content from the content distributionsystem.
 27. One or more non-transitory computer-readable media storinginstructions which, when executed by one or more computer processors ofa content distribution system, control the content distribution systemto perform operations comprising: receiving first content, originatingfrom a first content source, for distribution to unspecified users ofthe content distribution system; identifying, as recipients for thefirst content, users of the content distribution system that arefollowers of the first content source; identifying, using endpointinformation, one or more endpoints for the identified followers of thefirst content source; transmitting the first content to the endpointsfor the identified followers of the first content source; determiningsecond content, originating from a second content source, fortransmitting to one of the identified followers of the first contentsource, based on one or more of activities of users of the contentdistribution system other than the one identified follower, location ofthe one identified follower, or a characteristic of a computer deviceassociated with the one identified follower; and transmitting the secondcontent to the endpoints of the one identified follower.
 28. Thecomputer-readable media according to claim 27, wherein the instructionscauses the one or more computer processors to control the contentdistribution system to receive, from a user, a request for a timelineand to transmit the timeline to an endpoint of the requesting user. 29.The computer-readable media according to claim 28, wherein the timelinecomprises a public timeline.
 30. The computer-readable media accordingto claim 28, wherein the timeline comprises a private timeline.
 31. Thecomputer-readable media according to claim 27, wherein the instructionscause the one or more computer processors to control the contentdistribution system to: authenticate a user; process a request from theauthenticated user for a timeline; and transmit the timeline to anendpoint of the requesting user.
 32. The computer-readable mediaaccording to claim 27, wherein the instructions cause the one or morecomputer processors to control the content distribution system toreceive, from a user, a request for a list of followers and to transmitthe list to the requesting user.
 33. The computer-readable mediaaccording to claim 27, wherein the second content comprises advertising.34. The computer-readable media according to claim 27, wherein thereceived first content includes a uniform resources locator (URL). 35.The computer-readable media according to claim 34, wherein theinstructions cause the one or more computer processors to control thecontent distribution system to convert the URL to a converted URL beforetransmitting the first content to the endpoints for the identifiedfollowers of the first content source.
 36. The computer-readable mediaaccording to claim 35, wherein the converted URL is a shortened URL. 37.The computer-readable media according to claim 34, wherein theinstructions cause the one or more computer processors to control thecontent distribution system to control the content distribution systemto replace the URL with content corresponding to the URL beforetransmitting the first content to the endpoints for the identifiedfollowers of the first content source.
 38. The computer-readable mediaaccording to claim 27, wherein the instructions cause the one or morecomputer processors to control the content distribution system toconvert a portion of the received first content before transmitting thefirst content to the endpoints for the identified followers of the firstcontent source.
 39. The computer-readable media according to claim 27,wherein the instructions cause the one or more computer processors tocontrol the content distribution system to receive third content from afirst user directly addressed to a second user; identify, using theendpoint information, endpoints for the second user; and transmit thethird content to the identified endpoints for the second user.
 40. Thecomputer-readable media according to claim 27, wherein the one or moreprocessors are configured to execute the instructions stored in the oneor more memories to control the content distribution system to receive,from users of the content distribution system, preference informationindicative of preferences for the respective users.
 41. Thecomputer-readable media according to claim 27, wherein the first contentcomprises a vote request.